/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sv.com.intesal.compra.managed;

import java.io.Serializable;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import sv.com.intesal.clases.LimpiarManaged;
import sv.com.intesal.clases.Mensaje;
import sv.com.intesal.compra.bean.DevolucionCompra;
import sv.com.intesal.compra.bean.Proveedor;
import sv.com.intesal.compra.controlador.DevolucionCompraControlador;
import sv.com.intesal.seguridad.managed.SessionManaged;

/**
 *
 * @author ejerez
 */
@ManagedBean(name = "consultaDevolucionCompraManaged")
@ViewScoped
public class ConsultaDevolucionCompraManaged implements Serializable {

    private Boolean flagStep_1;
    private Boolean flagStep_2;
    private Mensaje m;
    private SessionManaged sm;
    /*PROVEEDOR*/
    private Proveedor selectedProveedor;
    /*DEVOLUCION COMPRA*/
    private List<DevolucionCompra> encaDevolucionCompra;
    private List<DevolucionCompra> detaDevolucionCompra;
    private DevolucionCompra selectedEncaDevolucionCompra;
    private DevolucionCompra selectedDetaDevolucionCompra;

    public ConsultaDevolucionCompraManaged() {
        m = new Mensaje();
        sm = new SessionManaged();

        this.flagStep_1 = true;
        this.flagStep_2 = false;

        this.selectedDetaDevolucionCompra = new DevolucionCompra();
        this.selectedEncaDevolucionCompra = new DevolucionCompra();
    }

    public void buscarGrid() {
        try {
            if (sm.validar_rol_usuario("wfrmcon_DevolucionCompra", sm.buscar) == true) {
                DevolucionCompraControlador dc = new DevolucionCompraControlador();
                this.encaDevolucionCompra = dc.getConsultaEncaDevolucionCompra(this.selectedEncaDevolucionCompra);
            }
        } catch (Exception e) {
            e.printStackTrace();
            m.messageError(m.getIerror());
        }
    }

    public void anularDevolucionCompra() {

        try {
            if (this.validar_anular() == true) {
                if (sm.validar_rol_usuario("wfrmcon_DevolucionCompra", sm.anular) == true) {
                    DevolucionCompraControlador dc = new DevolucionCompraControlador();
                    dc.anularDevolucionCompra(this.detaDevolucionCompra);
                    LimpiarManaged.limpiar();
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            m.messageError(m.getIerror());
        }
    }

    public void modificarDevolucionCompra() {
        try {
            if (this.validar_modificar() == true) {
                if (sm.validar_rol_usuario("wfrmcon_DevolucionCompra", sm.modificar) == true) {
                    DevolucionCompraControlador dc = new DevolucionCompraControlador();
                    dc.modificarDevolucionCompra(this.selectedDetaDevolucionCompra);
                }
            }
        } catch (Exception e) {
            m.messageError(m.getIerror());
            e.printStackTrace();
        }
    }

    private Boolean validar_modificar() throws Exception {
        try {
            Boolean var_return = true;

            if (this.selectedDetaDevolucionCompra.getEstado_dc().equals("A")) {
                m.messageError("NO PUEDE MODIFICAR REGISTRO YA ESTA ANULADO!");
                var_return = false;
            }
            if (this.selectedDetaDevolucionCompra.getCodigo_dc() == null) {
                m.messageFatal("DEBE ELEGIR UN REGISTRO A MODIFICAR. NO TIENE CODIGO ASIGNADO. ERROR");
                var_return = false;
            }
            return var_return;
        } catch (Exception e) {
            throw new Exception(e);
        }
    }

    private Boolean validar_anular() throws Exception {
        try {
            Boolean var_return = true;

            if (this.selectedDetaDevolucionCompra.getEstado_dc().equals("A")) {
                m.messageError("NO PUEDE ANULAR REGISTRO YA ESTA ANULADO!");
                var_return = false;
            }
            if (this.selectedDetaDevolucionCompra.getCodigo_dc() == null) {
                m.messageFatal("DEBE ELEGIR UN REGISTRO A MODIFICAR. NO TIENE CODIGO ASIGNADO. ERROR");
                var_return = false;
            }
            if (this.detaDevolucionCompra.size() == 0) {
                m.messageFatal("NO HAY MATERIALES PARA ANULAR EL REGISTRO");
                var_return = false;
            }
            return var_return;
        } catch (Exception e) {
            throw new Exception(e);
        }
    }

    public void ocultarFlag_1() {
        try {
            if (this.selectedDetaDevolucionCompra == null) {
                m.messageError("DEBE ELEGIR UN REGISTRO PARA CONTINUAR");
            } else if (this.selectedDetaDevolucionCompra != null) {
                this.flagStep_1 = false;
                this.flagStep_2 = true;

                DevolucionCompraControlador dc = new DevolucionCompraControlador();
                this.detaDevolucionCompra = dc.getConsultaDetaDevolucionCompra(this.selectedDetaDevolucionCompra.getCodigo_dc());
            }
        } catch (Exception e) {
            e.printStackTrace();
            m.messageError(m.getIerror());
        }
    }

    public void ocultarFlag_2() {
        try {
            this.flagStep_1 = true;
            this.flagStep_2 = false;
        } catch (Exception e) {
            e.printStackTrace();
            m.messageError(m.getIerror());
        }
    }

    public void getProveedor_Quick(Proveedor pr) {
        try {
            this.selectedProveedor = pr;
        } catch (Exception e) {
            e.printStackTrace();
            m.messageError(m.getIerror());
        }
    }

    public void generarEncaReporte() {
        try {

            if (this.encaDevolucionCompra == null) {
                m.messageError("NO HAY REGISTROS EN LA BUSQUEDA");
            } else {
                if (sm.validar_rol_usuario("wfrmcon_DevolucionCompra", sm.reporte) == true) {
                    DevolucionCompraControlador dc = new DevolucionCompraControlador();

                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            m.messageError(m.getIerror());
        }
    }

    public void generarDetaReporte() {
        try {

            if (this.encaDevolucionCompra == null) {
                m.messageError("NO HAY REGISTROS EN LA BUSQUEDA");
            } else if (this.detaDevolucionCompra == null) {
                m.messageError("NO HAY MATERIALES EN LA TRANSACCION");
            } else {
                if (sm.validar_rol_usuario("wfrmcon_Ajuste", sm.reporte) == true) {
                    // this.selectedEncaCompra.setId_c(this.selectedDetaCompra.getId_c());

                    DevolucionCompraControlador dc = new DevolucionCompraControlador();

                    //this.selectedEncaCompra.setId_c(null);
                }
            }
        } catch (Exception e) {
            //this.selectedEncaCompra.setId_c(null);
            e.printStackTrace();
            m.messageError(m.getIerror());
        }
    }

    /*SETTER AND GETTERS*/
    public List<DevolucionCompra> getDetaDevolucionCompra() {
        return detaDevolucionCompra;
    }

    public void setDetaDevolucionCompra(List<DevolucionCompra> detaDevolucionCompra) {
        this.detaDevolucionCompra = detaDevolucionCompra;
    }

    public List<DevolucionCompra> getEncaDevolucionCompra() {
        return encaDevolucionCompra;
    }

    public void setEncaDevolucionCompra(List<DevolucionCompra> encaDevolucionCompra) {
        this.encaDevolucionCompra = encaDevolucionCompra;
    }

    public DevolucionCompra getSelectedDetaDevolucionCompra() {
        if (selectedDetaDevolucionCompra == null) {
            selectedDetaDevolucionCompra = new DevolucionCompra();
        }
        return selectedDetaDevolucionCompra;
    }

    public void setSelectedDetaDevolucionCompra(DevolucionCompra selectedDetaDevolucionCompra) {
        this.selectedDetaDevolucionCompra = selectedDetaDevolucionCompra;
    }

    public DevolucionCompra getSelectedEncaDevolucionCompra() {
        if (selectedEncaDevolucionCompra == null) {
            selectedEncaDevolucionCompra = new DevolucionCompra();
        }
        return selectedEncaDevolucionCompra;
    }

    public void setSelectedEncaDevolucionCompra(DevolucionCompra selectedEncaDevolucionCompra) {
        this.selectedEncaDevolucionCompra = selectedEncaDevolucionCompra;
    }

    public Proveedor getSelectedProveedor() {
        if (selectedProveedor == null) {
            selectedProveedor = new Proveedor();
        }
        return selectedProveedor;
    }

    public void setSelectedProveedor(Proveedor selectedProveedor) {
        this.selectedProveedor = selectedProveedor;
    }

    public Boolean getFlagStep_1() {
        return flagStep_1;
    }

    public void setFlagStep_1(Boolean flagStep_1) {
        this.flagStep_1 = flagStep_1;
    }

    public Boolean getFlagStep_2() {
        return flagStep_2;
    }

    public void setFlagStep_2(Boolean flagStep_2) {
        this.flagStep_2 = flagStep_2;
    }
}
